////import org.example.demo.service.AliPayService;
////import org.example.demo.service.PayService;
//import java.lang.reflect.InvocationHandler;
//import java.lang.reflect.Method;
//import java.lang.reflect.Proxy;
////动态代理：使⽤JDK提供的api（InvocationHandler、Proxy实现），此种⽅式实现，要求被代理类必须实现接⼝
//    public class PayServiceJDKInvocationHandler implements InvocationHandler {
//        //⽬标对象即就是被代理对象
//        private Object target;
//
//        public PayServiceJDKInvocationHandler( Object target) {
//            this.target = target;
//        }
//
//        //proxy代理对象
//        @Override
//        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//            //1.安全检查
//            System.out.println("安全检查");
//            //2.记录⽇志
//            System.out.println("记录⽇志");
//            //3.时间统计开始
//            System.out.println("记录开始时间");
//            //通过反射调⽤被代理类的⽅法
//            Object retVal = method.invoke(target, args);
//            //4.时间统计结束
//            System.out.println("记录结束时间");
//            return retVal;
//        }
//        public static void main(String[] args) {
//            PayService target= new AliPayService();
//            //⽅法调⽤处理器
//            InvocationHandler handler =
//                    new PayServiceJDKInvocationHandler(target);
//            //创建⼀个代理类：通过被代理类、被代理实现的接⼝、⽅法调⽤处理器来创建
//            PayService proxy = (PayService) Proxy.newProxyInstance(
//                    target.getClass().getClassLoader(),
//                    new Class[]{PayService.class},
//                    handler
//            );
//            proxy.pay();
//        }
//    }